#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;
void file_it(ostream &os, double fo, const double fe[], int n);

const int LIMIT = 5;
int main(int argc, char const *argv[])
{
    ofstream fout;
    const char *fn = "ep_data.txt";
    fout.open(fn);
    if(!fout.is_open()) {
        cout << "Failed to open " << fn << ". Bye.\n";
        exit(EXIT_FAILURE);
    }
    double objective;
    cout << "Enter focal length of your telescope in mm :";
    cin >> objective;

    double ep[LIMIT];
    cout << "Enter focal lengths in mm, of " << LIMIT << " eyepieces:\n";
    for(int i = 0; i < LIMIT; i++) {
        cout << "Eyepice #" << i + 1 << ": ";
        cin >> ep[i];
    }

    file_it(fout, objective, ep, LIMIT);
    file_it(cout, objective, ep, LIMIT);

    cout << "Done.\n";
    return 0;
}

void file_it(ostream &os, double fo, const double fe[], int n)
{
    ios_base::fmtflags initial = os.setf(ios::fixed);//save initial formmating state
    os.precision(0);
    os << "Focal length of objective: " << fo << " mm\n";
    os.setf(ios::showpoint);    
    os.precision(1);
    os.width(12);
    os << "f.l. eyepiece";

    os.width(15);
    os << "magnification" << endl;

    for(int i = 0; i < n; i++) {
        os.width(12);
        os << fe[i];
        os.width(15);
        os << int(fo/fe[i] + 0.5) << endl;
    }
    os.setf(initial);   //restore initial formmating state
}